//
// Created by LiuYou on 2021/6/18.
//

/*
 * 这个文件提供接口API。封装了令牌桶的库。
 *
 * 对令牌桶的实现提出要求:
 * 用户如果来进行一个程序当中的多个不同速率的流控的时候, 那应该怎样做?
 *     令牌桶:
 *      * 需要指定不同的流速 -> CPS
 *      * 每个令牌桶一定会有上限 -> burst
 *      * 需要一个东西来存放当前的令牌数 -> token
 *      * 定义一些方法来帮助用户来控制令牌桶中的内容
 *      * 用户可能需要一个以上的令牌桶, 那就需要将这些令牌桶全部存起来
 *        就可以使用数组
 *
 * 在头文件中规定上限等以及方法。
 *
 * 使用线程来重构之前的信号。
 *
 */

#ifndef LINUXENVIRONMENTPROGRAMMING_MYTBF_HPP
#define LINUXENVIRONMENTPROGRAMMING_MYTBF_HPP


#define MYTBF_MAX       1024
typedef void mytbf_t;

// TODO 注意: 这里进行的隐藏。
mytbf_t* mytbf_init(int cps, int burst);

int mytbf_fetchtoken(mytbf_t*, int);

int mytbf_returntoken(mytbf_t*, int);

int mytbf_destroy(mytbf_t* ptr);

//class MyTBF {
//
//};


#endif //LINUXENVIRONMENTPROGRAMMING_MYTBF_HPP
